/*
******************************************************************************************************* 
**  Copyright (C) 2019, 苏州检易生物科技有限公司 
**  All rights reserved. 
** 
**  FileName:       	pmt.h
**  Description:	
**  Author:        	 
**  Version				v0.1
**  Date:           	2019-05-24
**	Function List： 
**  History:         
*********************************************************************************************************
*/


/*
*********************************************************************************************************
*                                              	防止重复包含
*********************************************************************************************************
*/

#ifndef  _PMT_H_
#define  _PMT_H_
/*
*********************************************************************************************************
*                                              	调试开关
*********************************************************************************************************
*/
#include "log_console.h"
#include "uart.h"
#include "bsp_conf.h"


#define  PMT_ENABLE
/*
*********************************************************************************************************
*                                              	宏定义
*********************************************************************************************************
*/
//测试时间
#define PMT_TEST_TIME_DELAY	200

#define	PMT_UART_BAUDRATE		19200


#define PMT_UART_TXBUFF_SIZE	32
#define PMT_UART_RXBUFF_SIZE	32
/*
*********************************************************************************************************
*                                              枚举和结构体类型定义
*********************************************************************************************************
*/


typedef enum pmt_cmd{
	PMT_CMD_VER=0x56,
	PMT_CMD_QURY=0x21,
	PMT_CMD_PARAM_T=0x54,		//门控时间即测试时间 /10ms
	PMT_CMD_PARAM_C=0x43,		//脉冲对分辨时间 
	PMT_CMD_START=0x4A,
	PMT_CMD_DATA=0xFF,			//返回结果
	PMT_CMD_CLEAR=0x45,			//停止
}pmt_cmd_t;

typedef enum pmt_status{
	PMT_STATUS_UNINIT,
	PMT_STATUS_IDLE,
	PMT_STATUS_DARK,
	PMT_STATUS_BASE,
	PMT_STATUS_FLASH,
	PMT_STATUS_ERR
}pmt_status_t;


typedef struct pmt{
	bsp_uart_t * p_uart;
	pmt_status_t status;
	
	uint8_t tx_buff[PMT_UART_TXBUFF_SIZE];
	uint8_t rx_buff[PMT_UART_RXBUFF_SIZE];
	
	void	(*pfn_rlt_cb)(struct pmt * handle,uint32_t rlt);
}pmt_t;

typedef void (*pmt_rlt_callback)(pmt_t* handle,uint32_t rlt);
/*
*********************************************************************************************************
*                                              	全局变量声明
*********************************************************************************************************
*/

/*
*********************************************************************************************************
*                                              	函数声明
*********************************************************************************************************
*/

pmt_t* pmt_init(pmt_rlt_callback);
pmt_status_t pmt_start_test(uint32_t time_ms,pmt_status_t test_status);
pmt_status_t pmt_start_multi(uint32_t interval,pmt_status_t test_status);
pmt_status_t pmt_stop(void);
#endif
